package com.link2room.optimus.facade;

import com.link2room.common.jpa.result.QueryResult;
import com.link2room.optimus.dto.param.base.PriceStaticBaseParamDto;
import com.link2room.optimus.dto.result.base.PriceDto;
import com.link2room.optimus.dto.result.base.PriceStaticDayDto;

import java.util.List;

/**
 * Created by sss on 2016/8/25.
 */
public interface IStaticPriceFacadeService {
    /**
     * 保存价格设置
     * @param basePriceStaticBaseParamDto
     * @throws Exception
     */
    PriceDto saveOrUpdateStaticPrice(PriceStaticBaseParamDto basePriceStaticBaseParamDto) throws Exception;

    PriceStaticDayDto saveOrUpdateStaticPriceDay(PriceStaticBaseParamDto basePriceStaticBaseParamDto) throws Exception;

    List<PriceStaticDayDto> saveOrUpdateStaticPriceDayList(PriceStaticBaseParamDto basePriceStaticBaseParamDto) throws Exception;

    PriceDto dealStaticPrice(PriceStaticBaseParamDto basePriceStaticBaseParamDto) throws Exception;

    /**
     * 列出酒店房型价格设置
     * @param priceStaticBaseParamDto
     * @return
     * @throws Exception
     */
    List<PriceDto> listPriceStaticDto(PriceStaticBaseParamDto priceStaticBaseParamDto)throws Exception;

    QueryResult<PriceStaticDayDto> listPriceStaticDays(PriceStaticBaseParamDto priceStaticBaseParamDto)throws Exception;

    /**
     * 批量删除特定日期价格设置
     * @param priceStaticBaseParamDto
     * @throws Exception
     */
    void deletePriceStaticDay(PriceStaticBaseParamDto priceStaticBaseParamDto)throws Exception;

    /**
     * 删除特定日期价格设置
     * @param priceStaticBaseParamDto
     * @throws Exception
     */
    void deletePriceStaticDayBatch(PriceStaticBaseParamDto priceStaticBaseParamDto)throws Exception;

    void updateStaticPrice(PriceStaticBaseParamDto priceStaticBaseParamDto)throws Exception;

    void updateStaticDayPriceIncrement(PriceStaticBaseParamDto priceStaticBaseParamDto)throws Exception;
}
